// run: $exec < bfdiff.in
#include <iostream>
#include <vector>
#include <string>

std::vector<int> inserted;

int get_new_index(int x)
{
	for (int i = 0; i < (int)inserted.size(); i++)
		if (inserted[i] <= x) x++;
	return x;
}

int main()
{
	std::ios::sync_with_stdio(false);
	std::string s;
	std::cin >> s;
	int m;
	std::cin >> m;
	for (int i = 0; i < m; i++) {
		char ch;
		std::cin >> ch;
		if (ch == 'I') {
			int p;
			std::cin >> ch >> p;
			s.insert(s.begin() + (--p), ch);
			inserted.push_back(p);
		} else {
			int x, y;
			std::cin >> x >> y;
			int px = get_new_index(--x);
			int py = get_new_index(--y);
			int ans = 0;
			for (int i = 0; px + i < (int)s.size() && py + i < (int)s.size() && s[px + i] == s[py + i]; i++)
				ans++;
			std::cout << ans << '\n';
		}
	}
}
